package com.haircut.sys.service.role;

import com.haircut.sys.vo.menu.MenuReqVo;
import com.haircut.sys.vo.menu.MenuTreeVo;
import com.haircut.sys.vo.menu.MenuVo;
import com.haircut.sys.vo.role.*;
import com.modular.result.PageResult;

import java.util.List;
import java.util.Map;

public interface IRoleService {

    /**
     * 根据Id查询角色信息
     * @param roleId
     * @return
     */
    RoleVo findDetail(String roleId);

    /**
     * 根据角色id集合查询结束名称信息
     * @param roleIdList
     * @return
     */
    Map<String, RoleSimpleVo> findRoleMapByRoleIdList(List<String> roleIdList);

    /**
     * 保存角色信息
     * @param roleVo
     */
    void saveRole(RoleReqVo roleVo);
    /**
     * 修改角色信息
     */
    void  modifyRole(RoleReqVo roleVo);
    /**
     * 删除角色信息
     */
    void deleteById(String roleId);

    /**
     * 查询角色列表
     * @param reqVo
     * @return
     */
    PageResult<RolePageResVo> findPage(ReolePageReqVo reqVo);

    /**
     * 根据角色拆线呢登录的权限信息
     * @param roleId
     * @return
     */
    List<String> findLoginPermissionList(String roleId);

    /**
     * 根据父级的菜单查询数据
     * @param reqVo
     * @return
     */
    List<MenuVo> findMenuByParentId(MenuReqVo reqVo);

    /**
     * 查询有全新的权限树
     * @return
     */
    List<MenuTreeVo> menuTreeByRoleId(String roleId);

    /**
     * 查询所有的角色信息
     * @return
     */
    List<RolePageResVo> findAll();

}
